package NGUYENVANDOAN.JDBC_DEMO.CALLABLESTATEMENTS;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

public class MODELS {
    // 1. Khai báo biến
    private Connection m_objConnection = null;    
    private ResultSet objRs = null;
    private CallableStatement objCmst = null;
    
    public MODELS(Connection objConnection) {
        m_objConnection = objConnection;
    }

    public ResultSet getElements(String Sql) 
                throws SQLException {       
        // 2. Khởi tạo đối tượng CallableStatements
        try {
            objCmst = m_objConnection.prepareCall(Sql);

            // 3. Thực thi
            objRs = objCmst.executeQuery();
        } catch (SQLException e) {
            throw e;
        }
        return objRs;
    }

    public ResultSet getElementsOfStoreProcedure() 
                        throws SQLException {
        // 2. Khởi tạo đối tượng CallableStatements
        try {
            objCmst = m_objConnection
                    .prepareCall("{call SP_HIENTHI_SINHVIEN_ALL()}");

            // 3. Thực thi
            objRs = objCmst.executeQuery();
        } catch (SQLException e) {
            throw e;
        }
        return objRs;
    }

    public ResultSet getElementsById(StudentEntity objStudent) 
            throws SQLException {
        // 2. Khởi tạo đối tượng CallableStatements        
        try {
            objCmst = m_objConnection.
                        prepareCall("{call SP_HIENTHI_SINHVIEN_BY_ID(?)}");
            //3. Thiết lập giá trị cho tham số truyền vào của thủ tục
            //objCmst.setInt(1, 26);   //Id = 26
            objCmst.setInt("ID", objStudent.getMaSv());  //Id = 26
            
            //4. Thực thi
            objRs = objCmst.executeQuery();
        } catch (SQLException e) {
            throw e;
        }
        return objRs;
    }
    
    public boolean ThemMonHoc(SubjectEntity objSubject) 
            throws SQLException {
        // 2. Khởi tạo đối tượng CallableStatements        
        try {
            objCmst = m_objConnection.
                        prepareCall("{call SP_THEM_MONHOC(?,?)}");
            //3. Thiết lập giá trị cho tham số truyền vào của thủ tục
           objCmst.setInt("subjectid", objSubject.getSubjectId());
           objCmst.setString("subjectname", objSubject.getSubjectName());
            
            //4. Thực thi
            objCmst.execute();
        } catch (SQLException e) {
            throw e;
        }
        return true;
    }
}
